package com.jiang.daily.Q2094;

import java.util.*;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/05/12 17:25
 */
public class Solution {
//    public int[] findEvenNumbers(int[] digits) {
//        Set<Integer> set = new HashSet<>();
//        int n = digits.length;
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < n; j++) {
//                for (int k = 0; k < n; k++) {
//                    if (i == j || j == k || i == k) {
//                        continue;
//                    }
//                    int num = digits[i] * 100 + digits[j] * 10 + digits[k];
//                    if (num >= 100 && num % 2 == 0) {
//                        set.add(num);
//                    }
//                }
//            }
//        }
//        int[] res = set.stream().mapToInt(Integer::intValue).toArray();
//        Arrays.sort(res);
//        return res;
//    }

    public int[] findEvenNumbers(int[] digits) {
        List<Integer> res = new ArrayList<>();
        Map<Integer, Integer> freq = new HashMap<>();
        // 统计数字数组中各数字的出现次数
        for (int d : digits) {
            freq.put(d, freq.getOrDefault(d, 0) + 1);
        }
        // 枚举所有三位偶数
        for (int i = 100; i < 1000; i += 2) {
            Map<Integer, Integer> freq1 = new HashMap<>();
            int num = i;
            // 统计当前偶数的每一位数字的出现次数
            while (num > 0) {
                int d = num % 10;
                freq1.put(d, freq1.getOrDefault(d, 0) + 1);
                num /= 10;
            }
            // 检查是否满足条件
            boolean isValid = true;
            for (Map.Entry<Integer, Integer> entry : freq1.entrySet()) {
                if (freq.getOrDefault(entry.getKey(), 0) < entry.getValue()) {
                    isValid = false;
                    break;
                }
            }
            if (isValid) {
                res.add(i);
            }
        }
        // 转换为数组
        int[] array = res.stream().mapToInt(Integer::intValue).toArray();
        Arrays.sort(array);
        return array;
    }
}
